#include "manufacturer.hpp"
#include <algorithm>
#include <vector>
#include <marnav/nmea/sentence.hpp>

namespace marnav
{
namespace nmea
{
/// @cond DEV
namespace
{
struct entry final {
	~entry() noexcept;

	manufacturer_id id;
	std::string tag;
	std::string name;
};

entry::~entry() noexcept
{
}

using manufacturer_map = std::vector<entry>;

#define MANUFACTURER(id, tag, text)    \
	{                                  \
		manufacturer_id::id, tag, text \
	}

// clang-format off
static const manufacturer_map manufacturers = {
	MANUFACTURER(_3SN, "3SN", "3-S NAVIGATION"),
	MANUFACTURER( AAR, "AAR", "ASIAN AMERICAN RESOURCES"),
	MANUFACTURER( ACE, "ACE", "AUTO-COMM ENGINEERING CORP."),
	MANUFACTURER( ACR, "ACR", "ACR ELECTRONICS, INC."),
	MANUFACTURER( ACS, "ACS", "ARCO SOLAR, INC."),
	MANUFACTURER( ACT, "ACT", "ADVANCED CONTROL TECHNOLOGY"),
	MANUFACTURER( ADI, "ADI", "ADITEL"),
	MANUFACTURER( ADN, "ADN", "AD NAVIGATION"),
	MANUFACTURER( AGI, "AGI", "AIRGUIDE INSTRUMENT CO."),
	MANUFACTURER( AHA, "AHA", "AUTOHELM OF AMERICA"),
	MANUFACTURER( AIP, "AIP", "AIPHONE CORP."),
	MANUFACTURER( ALD, "ALD", "ALDEN ELECTRONICS, INC."),
	MANUFACTURER( AMC, "AMC", "ALLTEK MARINE ELECTRONICS CORP."),
	MANUFACTURER( AMI, "AMI", "ADVANCED MARINE INSTRUMENTATION, LTD."),
	MANUFACTURER( AMR, "AMR", "AMR SYSTEMS"),
	MANUFACTURER( AMT, "AMT", "AIRMAR TECHNOLOGY"),
	MANUFACTURER( AND, "AND", "ANDREW CORPORATION"),
	MANUFACTURER( ANI, "ANI", "AUTONAUTICAL INSTRUMENTAL S.L."),
	MANUFACTURER( ANS, "ANS", "ANTENNA SPECIALISTS"),
	MANUFACTURER( ANX, "ANX", "ANALYTYX ELECTRONIC SYSTEMS"),
	MANUFACTURER( ANZ, "ANZ", "ANSCHUTZ OF AMERICA"),
	MANUFACTURER( AOB, "AOB", "AEROBYTES LTD"),
	MANUFACTURER( APC, "APC", "APELCO"),
	MANUFACTURER( APN, "APN", "AMERICAN PIONEER, INC."),
	MANUFACTURER( APW, "APW", "AUTOMATIC POWER, INC. / PHAROS MARINE"),
	MANUFACTURER( APX, "APX", "AMPEREX, INC."),
	MANUFACTURER( AQC, "AQC", "AQUA-CHEM, INC."),
	MANUFACTURER( AQD, "AQD", "AQUADYNAMICS, INC."),
	MANUFACTURER( AQM, "AQM", "AQUA METER INSTRUMENT CO."),
	MANUFACTURER( ARL, "ARL", "ACTIVE RESEARCH LIMITED"),
	MANUFACTURER( ARV, "ARV", "ARVENTO MOBILE SYSTEM A.S."),
	MANUFACTURER( ASH, "ASH", "ASHTECH"),
	MANUFACTURER( ASP, "ASP", "AMERICAN SOLAR POWER"),
	MANUFACTURER( ATC, "ATC", "ADVANCED C TECHNOLOGY, LTD"),
	MANUFACTURER( ATE, "ATE", "AETNA ENGINEERING"),
	MANUFACTURER( ATM, "ATM", "ATLANTIC MARKETING COMPANY"),
	MANUFACTURER( ATR, "ATR", "AIRTRON"),
	MANUFACTURER( ATV, "ATV", "ACTIVATION, INC."),
	MANUFACTURER( AVN, "AVN", "ADVANCED NAVIGATION, INC."),
	MANUFACTURER( AWA, "AWA", "AWA NEW ZEALAND, LTD."),
	MANUFACTURER( AXN, "AXN", "AXIOM NAVIGATION, INC."),
	MANUFACTURER( BBG, "BBG", "BBG INCORPORATED"),
	MANUFACTURER( BBL, "BBL", "BBL INDUSTRIES, INC."),
	MANUFACTURER( BBR, "BBR", "BBR AND ASSOCIATES"),
	MANUFACTURER( BDV, "BDV", "BRISSON DEVELOPMENT, INC."),
	MANUFACTURER( BEC, "BEC", "BOAT ELECTRIC CO."),
	MANUFACTURER( BFA, "BFA", "BLUEFLOW AMERICAS"),
	MANUFACTURER( BGG, "BGG", "BODENSEE GRAAVITYMETER GEOSYSTEMS GmbH"),
	MANUFACTURER( BGS, "BGS", "BARRINGER GEOSERVICE"),
	MANUFACTURER( BGT, "BGT", "BROOKES AND GATEHOUSE, INC."),
	MANUFACTURER( BHE, "BHE", "BH ELECTRONICS"),
	MANUFACTURER( BHR, "BHR", "BAHR TECHNOLOGIES, INC."),
	MANUFACTURER( BLB, "BLB", "BAY LABORATORIES"),
	MANUFACTURER( BMC, "BMC", "BMC"),
	MANUFACTURER( BME, "BME", "BARTEL MARINE ELECTRONICS"),
	MANUFACTURER( BMS, "BMS", "BECKER MARINE SYSTEMS"),
	MANUFACTURER( BMT, "BMT", "AVENTICS GmbH (formerly Bosch Rexroth AG Marine Technique)"),
	MANUFACTURER( BNI, "BNI", "NEIL BROWN INST. SYSTEMS"),
	MANUFACTURER( BNS, "BNS", "BOWDITCH NAVIGATION SYSTEMS"),
	MANUFACTURER( BRM, "BRM", "MEL BARR COMPANY"),
	MANUFACTURER( BRO, "BRO", "BROADGATE, LTD"),
	MANUFACTURER( BRY, "BRY", "BYRD INDUSTRIES"),
	MANUFACTURER( BTH, "BTH", "BENTHOS, INC."),
	MANUFACTURER( BTK, "BTK", "BALTEK CORP."),
	MANUFACTURER( BTS, "BTS", "BOAT SENTRY, INC."),
	MANUFACTURER( BVE, "BVE", "BV ENGINEERING"),
	MANUFACTURER( BXA, "BXA", "BENDIX-AVALEX, INC."),
	MANUFACTURER( CAI, "CAI", "CAMBRIDGE AERO INSTRUMENTS"),
	MANUFACTURER( CAT, "CAT", "CATEL"),
	MANUFACTURER( CBN, "CBN", "CYBERNET MARINE PRODUCTS"),
	MANUFACTURER( CCA, "CCA", "COPAL CORP OF AMERICA"),
	MANUFACTURER( CCC, "CCC", "COASTEL COMMUNICATIONS CO."),
	MANUFACTURER( CCL, "CCL", "COASTAL CLIMATE COMPANY"),
	MANUFACTURER( CCM, "CCM", "COASTAL COMMUNICATIONS"),
	MANUFACTURER( CDC, "CDC", "CORDIC COMPANY"),
	MANUFACTURER( CDI, "CDI", "CHETCO DIGITAL INSTRUMENTS"),
	MANUFACTURER( CDL, "CDL", "CDLTD INC"),
	MANUFACTURER( CEC, "CEC", "CECO COMMUNICATONS, INC."),
	MANUFACTURER( CEI, "CEI", "CAMBRIDGE ENGINEERING, INC."),
	MANUFACTURER( CFS, "CFS", "CARLISLE AND FINCH COMPANY"),
	MANUFACTURER( CHI, "CHI", "CHARLES INDUSTRIES, LTD."),
	MANUFACTURER( CIN, "CIN", "CANADIAN AUTOMOTIVE INSTRUMENTS"),
	MANUFACTURER( CKM, "CKM", "CINKEL MARINE ELECTRONICS"),
	MANUFACTURER( CLR, "CLR", "COLORLIGHT AB"),
	MANUFACTURER( CMA, "CMA", "SOC. NOUVELLE D'EQUIP. CALVADOS"),
	MANUFACTURER( CMC, "CMC", "COE MANUFACTURING CO."),
	MANUFACTURER( CME, "CME", "CUSHMAN ELECTRONICS, INC."),
	MANUFACTURER( CML, "CML", "CML MICROSYSTEMS, PLC"),
	MANUFACTURER( CMN, "CMN", "COMNAV MARINE, LTD."),
	MANUFACTURER( CMP, "CMP", "C-MAP, s.r.l."),
	MANUFACTURER( CMS, "CMS", "COASTAL MARINE SALES CO."),
	MANUFACTURER( CMV, "CMV", "COURSEMASTER USA, INC."),
	MANUFACTURER( CNI, "CNI", "CONTINENTAL INSTRUMENTS"),
	MANUFACTURER( CNS, "CNS", "C.N.S. SYSTEMS AB"),
	MANUFACTURER( CNV, "CNV", "COASTAL NAVIGATOR"),
	MANUFACTURER( CNX, "CNX", "CYNEX MANUFACTURING CO."),
	MANUFACTURER( CPL, "CPL", "COMPUTROL, INC."),
	MANUFACTURER( CPN, "CPN", "COMPUNAV"),
	MANUFACTURER( CPS, "CPS", "COLUMBUS POSITIONING, LTD"),
	MANUFACTURER( CPT, "CPT", "CPT, INC."),
	MANUFACTURER( CRE, "CRE", "CRYSTAL ELECTRONICS, LTD"),
	MANUFACTURER( CRO, "CRO", "THE CARO GROUP"),
	MANUFACTURER( CRY, "CRY", "CRYSTEK CRYSTALS CORP."),
	MANUFACTURER( CSI, "CSI", "COMMUNICATION SYSTEMS INTL"),
	MANUFACTURER( CSM, "CSM", "COMSAT MARITIME SERVICES"),
	MANUFACTURER( CSR, "CSR", "CSR STOCKHOLM"),
	MANUFACTURER( CSS, "CSS", "CNS INC"),
	MANUFACTURER( CST, "CST", "CAST, INC."),
	MANUFACTURER( CSV, "CSV", "COMBINED SERVICES"),
	MANUFACTURER( CTA, "CTA", "CURRENT ALTERNATIVES"),
	MANUFACTURER( CTB, "CTB", "CETEC BENMAR"),
	MANUFACTURER( CTC, "CTC", "CELL-TECH COMMUNICATIONS"),
	MANUFACTURER( CTE, "CTE", "CASTLE ELECTRONICS"),
	MANUFACTURER( CTL, "CTL", "C-TECH, LTD."),
	MANUFACTURER( CTS, "CTS", "C-TECH SYSTEMS"),
	MANUFACTURER( CUS, "CUS", "CUSTOMWARE"),
	MANUFACTURER( CWD, "CWD", "CUBIC WESTERN DATA"),
	MANUFACTURER( CWV, "CWV", "CELWAVE R.F., INC."),
	MANUFACTURER( CYZ, "CYZ", "CYZ, INCORPORATED"),
	MANUFACTURER( DAS, "DAS", "DASSAULT SERCEL NAVIGATION-POSITIONING"),
	MANUFACTURER( DBM, "DBM", "DEEP BLUE MARINE"),
	MANUFACTURER( DCC, "DCC", "DOLPHIN COMPONENTS CORP."),
	MANUFACTURER( DEB, "DEB", "DEBEG GMBH"),
	MANUFACTURER( DEC, "DEC", "DECCA DIVISION, LITTON MARINE SYSTEMS, BV"),
	MANUFACTURER( DFI, "DFI", "DEFENDER INDUSTRIES, INC."),
	MANUFACTURER( DGC, "DGC", "DIGICOURSE, INC."),
	MANUFACTURER( DGY, "DGY", "DIGITAL YACHT LTD"),
	MANUFACTURER( DGP, "DGP", "DIGPILOT AS"),
	MANUFACTURER( DME, "DME", "DELORME"),
	MANUFACTURER( DMI, "DMI", "DATAMARINE INTERNATIONAL"),
	MANUFACTURER( DNS, "DNS", "DORNIER SYSTEM GMBH"),
	MANUFACTURER( DNT, "DNT", "DEL NORTE TECHNOLOGY, INC."),
	MANUFACTURER( DOI, "DOI", "DIGITAL OACEANS INC."),
	MANUFACTURER( DPS, "DPS", "DANAPLUS, INC."),
	MANUFACTURER( DRL, "DRL", "R.L.DRAKE COMPANY"),
	MANUFACTURER( DSC, "DSC", "DYNASCAN CORP."),
	MANUFACTURER( DTN, "DTN", "DYTECHNA, LTD"),
	MANUFACTURER( DYN, "DYN", "DYNAMOTE CORPORATION"),
	MANUFACTURER( DYT, "DYT", "DYTEK LABORATORIES, INC."),
	MANUFACTURER( EAN, "EAN", "EURO AVIONICS NAVIGATIONSSYSTEME GmbH"),
	MANUFACTURER( EBC, "EBC", "EMERGENCY BEACON CORP."),
	MANUFACTURER( ECR, "ECR", "ESCORT, INC."),
	MANUFACTURER( ECT, "ECT", "ECHOTEC, INC."),
	MANUFACTURER( EDO, "EDO", "EDO CORPORATION ELECTROACOUSTICS DIV."),
	MANUFACTURER( EEV, "EEV", "EEV, INC."),
	MANUFACTURER( EFC, "EFC", "EFCOM COMMUNICATION SYSTEMS"),
	MANUFACTURER( EKC, "EKC", "EASTMAN KODAK"),
	MANUFACTURER( ELA, "ELA", "L-3 COMMUNICATIONS ELAC NAUTIK GmbH"),
	MANUFACTURER( ELD, "ELD", "ELECTRONIC DEVICES, INC."),
	MANUFACTURER( ELM, "ELM", "ELMAN s.r.l"),
	MANUFACTURER( EMC, "EMC", "ELECTRIC MOTION COMPANY"),
	MANUFACTURER( EMR, "EMR", "EMRI-AS DK"),
	MANUFACTURER( EMS, "EMS", "ELECTRO MARINE SYSTEMS, INC."),
	MANUFACTURER( ENA, "ENA", "ENERGY ANALYSTS, INC."),
	MANUFACTURER( ENC, "ENC", "ENCRON, INC."),
	MANUFACTURER( EPM, "EPM", "EPSCO MARINE"),
	MANUFACTURER( EPT, "EPT", "EASTPRINT, INC."),
	MANUFACTURER( ERC, "ERC", "THE ERICSSON CORPORATION"),
	MANUFACTURER( ERD, "ERD", "eRide, INC."),
	MANUFACTURER( ESA, "ESA", "EUROPEAN SPACE AGENCY"),
	MANUFACTURER( ESC, "ESC", "ELECTRONICS EMPORIUM, DIVISION OF  ESC PRODUCTS"),
	MANUFACTURER( ESY, "ESY", "E-SYSTEMS, ECI DIVISION"),
	MANUFACTURER( FDN, "FDN", "FLUIDDYNE"),
	MANUFACTURER( FEC, "FEC", "FURUNO ELECTRIC CO."),
	MANUFACTURER( FHE, "FHE", "FISH HAWK ELECTRONICS"),
	MANUFACTURER( FJN, "FJN", "JON FLUKE CO."),
	MANUFACTURER( FLA, "FLA", "FLARM TECHNOLGY GMBH (SWITZERLAND)"),
	MANUFACTURER( FLO, "FLO", "FLOSCAN INCORPORATED"),
	MANUFACTURER( FMM, "FMM", "FIRST MATE MARINE AUTOPILOTS"),
	MANUFACTURER( FMS, "FMS", "FUGRO SEASTAR AS (MARINESTAR)"),
	MANUFACTURER( FNT, "FNT", "FRANKLIN NET AND TWINE, LTD"),
	MANUFACTURER( FRC, "FRC", "THE FREDERICKS COMPANY"),
	MANUFACTURER( FST, "FST", "FASTRAX OY"),
	MANUFACTURER( FTG, "FTG", "T.G.FARIA CORPORATION"),
	MANUFACTURER( FTT, "FTT", "FT- TEC"),
	MANUFACTURER( FUJ, "FUJ", "FUJITSU TEN CORPORATION OF AMERICA"),
	MANUFACTURER( FUR, "FUR", "FURUNO USA, INC."),
	MANUFACTURER( FWG, "FWG", "FORSCHUNGSBEREICH, WASSERCHALL AND GEOPHYSIK WTD 71"),
	MANUFACTURER( GAM, "GAM", "GRE AMERICA, INC."),
	MANUFACTURER( GCA, "GCA", "GULF CELLULAR ASSOCIATES"),
	MANUFACTURER( GEC, "GEC", "GEC PLESSEY SEMICONDUCTORS"),
	MANUFACTURER( GES, "GES", "GEOSTAR CORPORATION"),
	MANUFACTURER( GFC, "GFC", "GRAPHIC CONTROLS, CORP."),
	MANUFACTURER( GFV, "GFV", "GFV MARINE LTD."),
	MANUFACTURER( GIL, "GIL", "GILL INSTRUMENTS LIMITED"),
	MANUFACTURER( GIS, "GIS", "GALAX INTEGRATED SYSTEMS"),
	MANUFACTURER( GNV, "GNV", "GEONAV INTERNATIONAL"),
	MANUFACTURER( GPI, "GPI", "GLOBAL POSITIONING INSTRUMENT CORP."),
	MANUFACTURER( GPP, "GPP", "GEO++ GmbH"),
	MANUFACTURER( GPR, "GPR", "GLOBAL POSITIONING SYSTEM JOINT PROGRAM OFFICE (ROCKWELL COLLINS)"),
	MANUFACTURER( GRF, "GRF", "GRAFINTA (SPAIN)"),
	MANUFACTURER( GRM, "GRM", "GARMIN CORPORATION"),
	MANUFACTURER( GSC, "GSC", "GOLD STAR COMPAPNY, LTD"),
	MANUFACTURER( GTI, "GTI", "GENESIS TECHNOLOGY INTERNATIONAL LTD"),
	MANUFACTURER( GTO, "GTO", "GRO ELECTRONICS"),
	MANUFACTURER( GVE, "GVE", "GUEST CORPORATION"),
	MANUFACTURER( GVT, "GVT", "GREAT VALLEY TECHNOLOGY"),
	MANUFACTURER( HAI, "HAI", "HYDRAGRAPHIC ASSOCIATES, LTD"),
	MANUFACTURER( HAL, "HAL", "HAL COMMUNICATIONS CORP."),
	MANUFACTURER( HAR, "HAR", "HARRIS CORPORATION"),
	MANUFACTURER( HHS, "HHS", "HYDEL HELLAS SKALTSARIS LTD (SHANGHAI)"),
	MANUFACTURER( HIG, "HIG", "HY-GAIN"),
	MANUFACTURER( HIL, "HIL", "PHILIPS NAVIGATION A/S"),
	MANUFACTURER( HIT, "HIT", "HI-TEC"),
	MANUFACTURER( HMS, "HMS", "HYDE MARINE SYSTEMS, INC."),
	MANUFACTURER( HOM, "HOM", "HOPPE MARINE GmbH"),
	MANUFACTURER( HPK, "HPK", "HEWLETT-PACKARD"),
	MANUFACTURER( HRC, "HRC", "HARCO MANUFACTURING CO."),
	MANUFACTURER( HRT, "HRT", "HART SYSTEMS, INC."),
	MANUFACTURER( HTI, "HTI", "HEART INTERFACE, INC."),
	MANUFACTURER( HUL, "HUL", "HULL ELECTRONICS COMPANY"),
	MANUFACTURER( HWM, "HWM", "HONEYWELL MARINE SYSTEMS"),
	MANUFACTURER( IBM, "IBM", "IBM MICROELECTRONICS"),
	MANUFACTURER( ICO, "ICO", "ICOM OF AMERICA, INC."),
	MANUFACTURER( ICG, "ICG", "INITIATIVE COMPUTING USA, INC. INITIATIVE COMPUTING AG"),
	MANUFACTURER( IDS, "IDS", "ICAN MARINE (CANADA)"),
	MANUFACTURER( IFD, "IFD", "INTERNATIONAL FISHING DEVICES"),
	MANUFACTURER( IFI, "IFI", "INSTRUMENTS FOR INDUSTRY"),
	MANUFACTURER( IME, "IME", "IMPERIAL MARINE EQUIPMENT"),
	MANUFACTURER( IMI, "IMI", "INTERNATIONAL MARINE INSTRUMENTS"),
	MANUFACTURER( IMM, "IMM", "ITT MACKAY MARINE"),
	MANUFACTURER( IMP, "IMP", "IMPULSE MANUFACTURING, INC."),
	MANUFACTURER( IMR, "IMR", "IDEAL TECHNOLOGIES INC"),
	MANUFACTURER( IMT, "IMT", "INTERNATIONAL MARKETING AND TRADING, INC."),
	MANUFACTURER( INM, "INM", "INMAR ELECTRONIC AND SALES"),
	MANUFACTURER( INT, "INT", "INTECH, INC."),
	MANUFACTURER( IRT, "IRT", "INTERA TECHNOLOGIES, LTD"),
	MANUFACTURER( IST, "IST", "INNERSPACE TECHNOLOGY, INC."),
	MANUFACTURER( ITM, "ITM", "INTERMARINE ELECTRONICS, INC."),
	MANUFACTURER( ITR, "ITR", "ITERA, LTD"),
	MANUFACTURER( IWW, "IWW", "INLAND WATERWAYS (GERMANY)"),
	MANUFACTURER( IXB, "IXB", "iXBLUE"),
	MANUFACTURER( JAN, "JAN", "JAN CRYSTALS"),
	MANUFACTURER( JAS, "JAS", "JASCO RESEARCH LTD."),
	MANUFACTURER( JFR, "JFR", "RAY JEFFERSON"),
	MANUFACTURER( JMT, "JMT", "JAPAN MARINE TELECOMMUNICATIONS"),
	MANUFACTURER( JPI, "JPI", "J.P. INSTRUMENTS"),
	MANUFACTURER( JRC, "JRC", "JAPAN RADIO COMPANY, LTD"),
	MANUFACTURER( JRI, "JRI", "J-R INDUSTRIES, INC."),
	MANUFACTURER( JTC, "JTC", "J-TECH ASSOCIATES, INC."),
	MANUFACTURER( JTR, "JTR", "JOTRON RADIOSEARCH, LTD"),
	MANUFACTURER( KBE, "KBE", "KB ELECTRONICS, LTD"),
	MANUFACTURER( KBM, "KBM", "KENNEBEC MARINE COMPANY"),
	MANUFACTURER( KEL, "KEL", "KNUDSEN ENGINEERING, LTD"),
	MANUFACTURER( KHU, "KHU", "KELVIN HUGHES LTD"),
	MANUFACTURER( KLA, "KLA", "KLEIN ASSOCIATES, INC."),
	MANUFACTURER( KME, "KME", "KYUSHU MATSUSHITA ELECTRIC"),
	MANUFACTURER( KML, "KML", "KONGSBERG MESOTECH LTD"),
	MANUFACTURER( KMO, "KMO", "KONGSBERG MARITIME AS"),
	MANUFACTURER( KMR, "KMR", "KING MARINE RADIO CORP."),
	MANUFACTURER( KNC, "KNC", "KONGSBERG NORCONTROLS"),
	MANUFACTURER( KNG, "KNG", "KING RADIO CORPORATION"),
	MANUFACTURER( KOD, "KOD", "KODEN ELECTRONICS CO., LTD"),
	MANUFACTURER( KRA, "KRA", "EDV KRAJKA"),
	MANUFACTURER( KRP, "KRP", "KRUPP INTERNATIONAL, INC."),
	MANUFACTURER( KST, "KST", "KONGSBERG SEATEX AS"),
	MANUFACTURER( KVH, "KVH", "KVH COMPANY"),
	MANUFACTURER( KYI, "KYI", "KYOCERA INTERNATIONAL, INC."),
	MANUFACTURER( L3A, "L3A", "L3 COMMUNICATIONS RECORDERS DIVISION"),
	MANUFACTURER( LAT, "LAT", "LATITUDE CORPORATION"),
	MANUFACTURER( L3I, "L3I", "L-3 INTERSTATE ELECTRONICS COPORATION"),
	MANUFACTURER( LCI, "LCI", "LASERCRAFT INC."),
	MANUFACTURER( LEC, "LEC", "LORAIN ELECTRONICS CORP"),
	MANUFACTURER( LEI, "LEI", "LEICA GEOSYSTEMS PTY LTD."),
	MANUFACTURER( LIT, "LIT", "LITTON LASER SYSTEMS"),
	MANUFACTURER( LMM, "LMM", "LAMARCHE MANUFACTURING CO."),
	MANUFACTURER( LRD, "LRD", "LORAD"),
	MANUFACTURER( LSE, "LSE", "LITTLEMORE SCIENTIFIC ENG."),
	MANUFACTURER( LSP, "LSP", "LASER PLOT, INC."),
	MANUFACTURER( LST, "LST", "LITE SYSTEMS ENGINEERING"),
	MANUFACTURER( LTH, "LTH", "LARS THRANE"),
	MANUFACTURER( LTF, "LTF", "LITTLEFUSE, INC."),
	MANUFACTURER( LTI, "LTI", "LASER TECHNOLOGY, INC."),
	MANUFACTURER( LWR, "LWR", "LOWRANCE ELECTRONICS CORP."),
	MANUFACTURER( MCA, "MCA", "CANADIAN MARCONI COMPANY"),
	MANUFACTURER( MCI, "MCI", "MATSUSHITA COMMUNICATIONS"),
	MANUFACTURER( MCL, "MCL", "MICROLOGIC, INC."),
	MANUFACTURER( MDL, "MDL", "MEDALLION INSTRUMENTS, INC."),
	MANUFACTURER( MDS, "MDS", "MARINE DATA SYSTEMS"),
	MANUFACTURER( MEC, "MEC", "MARINE ENGINE CENTER, INC."),
	MANUFACTURER( MEG, "MEG", "MARITEC ENGINEERING G.m.b.H."),
	MANUFACTURER( MES, "MES", "MARINE ELECTRONICS SERV. INC."),
	MANUFACTURER( MEW, "MEW", "MATSUSHITA ELECTRIC WORKS"),
	MANUFACTURER( MFR, "MFR", "MODERN PRODUCTS, LTD"),
	MANUFACTURER( MFW, "MFW", "FRANK W. MURPHY MFG."),
	MANUFACTURER( MGN, "MGN", "MAGELLEN SYSTEMS CORP."),
	MANUFACTURER( MGS, "MGS", "MG ELECTRONIC SALES CORP."),
	MANUFACTURER( MIE, "MIE", "MIECO, INC."),
	MANUFACTURER( MIM, "MIM", "MARCONI INTERNATIONAL MARINE"),
	MANUFACTURER( MLE, "MLE", "MARTHA LAKE ELECTRONICS"),
	MANUFACTURER( MLN, "MLN", "MATLIN COMPANY"),
	MANUFACTURER( MLP, "MLP", "MARLIN PRODUCTS"),
	MANUFACTURER( MLT, "MLT", "MILLER TECHNOLOGIES"),
	MANUFACTURER( MMB, "MMB", "MARSH-MCBIRNEY, INC."),
	MANUFACTURER( MME, "MME", "MARKS MARINE ENGINEERING"),
	MANUFACTURER( MMI, "MMI", "MICROWAVE MONOLITHICS"),
	MANUFACTURER( MMP, "MMP", "METAL MARINE PILOT, INC."),
	MANUFACTURER( MMS, "MMS", "MARS MARINE SYSTEMS"),
	MANUFACTURER( MMT, "MMT", "MICRO MODULAR TECHNOLOGIES"),
	MANUFACTURER( MNI, "MNI", "MICRO-NOW INSTRUMENT CO."),
	MANUFACTURER( MNT, "MNT", "MARINE TECHNOLOGY"),
	MANUFACTURER( MNX, "MNX", "MARINEX"),
	MANUFACTURER( MOT, "MOT", "MOTOROLA COMMUNICATIONS & ELECTRONICS"),
	MANUFACTURER( MPI, "MPI", "MEGAPULSE, INC."),
	MANUFACTURER( MPN, "MPN", "MEMPHIS NET AND TWINE CO."),
	MANUFACTURER( MQS, "MQS", "MARQUIS INDUSTRIES, INC."),
	MANUFACTURER( MRC, "MRC", "MARINECOMP, INC."),
	MANUFACTURER( MRE, "MRE", "MORAD ELECTRONICS CORP."),
	MANUFACTURER( MRP, "MRP", "MOORING PRODUCTS OF NEW ENGLAND"),
	MANUFACTURER( MRR, "MRR", "II MORROW, INC."),
	MANUFACTURER( MRS, "MRS", "MARINE RADIO SERVICE"),
	MANUFACTURER( MSB, "MSB", "MITSUBISHI ELECTRIC CO., LTD"),
	MANUFACTURER( MSF, "MSF", "MICROSOFT CORPORATION"),
	MANUFACTURER( MSE, "MSE", "MASTER ELECTRONICS"),
	MANUFACTURER( MSM, "MSM", "MASTER MARINER, INC."),
	MANUFACTURER( MST, "MST", "MESOTECH SYSTEMS, LTD"),
	MANUFACTURER( MTA, "MTA", "MARINE TECHNICAL ASSOCIATES"),
	MANUFACTURER( MTD, "MTD", "MARITEL DATA SERVICES"),
	MANUFACTURER( MTG, "MTG", "MARINE TECHNICAL ASSISTANCE  GROUP"),
	MANUFACTURER( MTI, "MTI", "MOBILE TELESYSTEMS, INC."),
	MANUFACTURER( MTK, "MTK", "MARTECH, INC."),
	MANUFACTURER( MTR, "MTR", "MITRE CORPORATION, THE"),
	MANUFACTURER( MTS, "MTS", "METS, INC."),
	MANUFACTURER( MUR, "MUR", "MURATA ERIE NORTH AMERICA"),
	MANUFACTURER( MVX, "MVX", "MAGNAVOX ADVANCED PRODUCTS AND SYSTEMS CO."),
	MANUFACTURER( MXS, "MXS", "MAXSEA INTERNATIONAL"),
	MANUFACTURER( MXX, "MXX", "MAXXIMA MARINE"),
	MANUFACTURER( NAG, "NAG", "NORIS AUTOMATION GmbH"),
	MANUFACTURER( NAT, "NAT", "NAUTECH, LTD"),
	MANUFACTURER( NAU, "NAU", "NAUTICALL"),
	MANUFACTURER( NAV, "NAV", "NAVTEC, INCORPORATED"),
	MANUFACTURER( NCT, "NCT", "NAVCOM TECHNOLOGY, INC."),
	MANUFACTURER( NEF, "NEF", "NEW ENGLAND FISHING GEAR"),
	MANUFACTURER( NGC, "NGC", "NORTHROP GRUMMAN MARITIME SYSTEMS"),
	MANUFACTURER( NGS, "NGS", "NAVIGATION SCIENCES, INC."),
	MANUFACTURER( NIX, "NIX", "L-3 NAUTRONIX"),
	MANUFACTURER( NMR, "NMR", "NEWMAR"),
	MANUFACTURER( NOM, "NOM", "NAV-COM, INC."),
	MANUFACTURER( NOR, "NOR", "NORTECH SURVEYS (CANADA)"),
	MANUFACTURER( NOV, "NOV", "NovAtel COMMUNICATIONS, LTD"),
	MANUFACTURER( NSI, "NSI", "NOREGON SYSTEMS INC"),
	MANUFACTURER( NSL, "NSL", "NAVITRON SYSTEMS LTD"),
	MANUFACTURER( NSM, "NSM", "NORTHSTAR MARINE"),
	MANUFACTURER( NTI, "NTI", "NORTHSTAR TECHNOLOGIES, INC."),
	MANUFACTURER( NTK, "NTK", "NOVATECH DESIGNS, LTD"),
	MANUFACTURER( NTS, "NTS", "NAVTECH SYSTEMS"),
	MANUFACTURER( NUT, "NUT", "NAUTITECH PTY, LTD"),
	MANUFACTURER( NVC, "NVC", "NAVICO"),
	MANUFACTURER( NVG, "NVG", "NVS TECHNOLOGIES AG"),
	MANUFACTURER( NVL, "NVL", "NAVELEC MARINE SYSTEMS S.L."),
	MANUFACTURER( NVO, "NVO", "NAVIONICS, s.p.a."),
	MANUFACTURER( NVS, "NVS", "NAVSTAR"),
	MANUFACTURER( NVT, "NVT", "NOVARIANT, INC"),
	MANUFACTURER( NWC, "NWC", "NAVAL WARFARE CENTER"),
	MANUFACTURER( OAR, "OAR", "O.A.R. CORPORATION"),
	MANUFACTURER( OBS, "OBS", "OBSERVATOR INSTRUMENTS"),
	MANUFACTURER( ODE, "ODE", "OCEAN DATA EQUIPMENT CORP."),
	MANUFACTURER( ODN, "ODN", "ODIN ELECTRONICS, INC."),
	MANUFACTURER( OHB, "OHB", "OHB SYSTEMS"),
	MANUFACTURER( OIN, "OIN", "OCEAN INSTRUMENTS, INC."),
	MANUFACTURER( OKI, "OKI", "OKI ELECTRIC INDUSTRY CO."),
	MANUFACTURER( OLY, "OLY", "NAVSTAR, LTD (POLYTECHNIC ELECTRONICS)"),
	MANUFACTURER( OMN, "OMN", "OMNETICS"),
	MANUFACTURER( OMT, "OMT", "OMNITECH AS"),
	MANUFACTURER( ONI, "ONI", "OMSKIY NAUCHNO ISSLEDOVATELSKIY INSTITUT PRIBOROSTROENIYA (RUSSIA)"),
	MANUFACTURER( ORB, "ORB", "ORBCOMM"),
	MANUFACTURER( ORE, "ORE", "OCEAN RESEARCH"),
	MANUFACTURER( OSI, "OSI", "OFFSHORE SYSTEMS INTL."),
	MANUFACTURER( OSL, "OSL", "OFFSHORE SYSTEMS, LTD."),
	MANUFACTURER( OSS, "OSS", "OCEAN SOLUTION SYSTEMS"),
	MANUFACTURER( OTK, "OTK", "OCEAN TECHNOLOGY"),
	MANUFACTURER( PCE, "PCE", "PACE"),
	MANUFACTURER( PCM, "PCM", "P SEA MARINE SYSTEMS"),
	MANUFACTURER( PDC, "PDC", "PAN DELTA CONTROLS LTD"),
	MANUFACTURER( PDM, "PDM", "PRODELCO MARINE SYSTEMS"),
	MANUFACTURER( RHM, "RHM", "RH MARINE"),
	MANUFACTURER( PLA, "PLA", "PLATH,C.DIV OF LITTON"),
	MANUFACTURER( PLI, "PLI", "PILOT INSTRUMENTS"),
	MANUFACTURER( PMI, "PMI", "PERNICKA MARINE INSTRUMENTS"),
	MANUFACTURER( PMP, "PMP", "PACIFIC MARINE PRODUCTS"),
	MANUFACTURER( PNI, "PNI", "PNI SENSORS INC"),
	MANUFACTURER( PNL, "PNL", "POINTS NORTH, LTD"),
	MANUFACTURER( PPL, "PPL", "PAMARINE PRIVATE LIMITED"),
	MANUFACTURER( PRK, "PRK", "PERKO, INC."),
	MANUFACTURER( PSM, "PSM", "PEARCE-SIMPSON"),
	MANUFACTURER( PST, "PST", "POINTSTAR A/S"),
	MANUFACTURER( PTC, "PTC", "PETRO-COM"),
	MANUFACTURER( PTG, "PTG", "P.T.I./GUEST"),
	MANUFACTURER( PTH, "PTH", "PATHCOM, INC."),
	MANUFACTURER( PVS, "PVS", "PLANEVISION SYSTEMS"),
	MANUFACTURER( QWE, "QWE", "QWERTY ELEKTRONIK AB"),
	MANUFACTURER( Q2N, "Q2N", "QQN NAVIGATION AB"),
	MANUFACTURER( RAC, "RAC", "RACAL MARINE, INC."),
	MANUFACTURER( RAE, "RAE", "RCA ASTRO-ELECTRONICS"),
	MANUFACTURER( RAF, "RAF", "ROBINS AIR FORCE (USAF)"),
	MANUFACTURER( RAK, "RAK", "ROCKSON AUTOMATION, KIEL"),
	MANUFACTURER( RAY, "RAY", "RAYTHEON MARINE COMPANY"),
	MANUFACTURER( RCA, "RCA", "RCA SERVICE COMPANY"),
	MANUFACTURER( RCH, "RCH", "ROACH ENGINEERING"),
	MANUFACTURER( RCI, "RCI", "ROCHESTER INSTRUMENTS, INC."),
	MANUFACTURER( RDC, "RDC", "USCG R&D CENTER"),
	MANUFACTURER( RDI, "RDI", "RADAR DEVICES"),
	MANUFACTURER( RDM, "RDM", "RAY-DAR MANUFACTURING CO."),
	MANUFACTURER( REC, "REC", "ROSS ENGINEERING CO."),
	MANUFACTURER( RFP, "RFP", "ROLFITE PRODUCTS, INC."),
	MANUFACTURER( RGC, "RGC", "RCA GLOBAL COMMUNICATIONS"),
	MANUFACTURER( RGL, "RGL", "RIEGL LASER MEASUREMENT SYSTEMS"),
	MANUFACTURER( RGY, "RGY", "REGENCY ELECTRONICS, INC."),
	MANUFACTURER( RHO, "RHO", "RHOTHETA ELEKTRONIK GmbH"),
	MANUFACTURER( RLK, "RLK", "REELEKTRONIKA.NL"),
	MANUFACTURER( RME, "RME", "RACAL MARINE ELECTRONICS"),
	MANUFACTURER( RMR, "RMR", "RCA MISSILE AND RADAR"),
	MANUFACTURER( RSL, "RSL", "ROSS LABORATORIES, INC."),
	MANUFACTURER( RSM, "RSM", "ROBERTSON-SHIPMATE, USA"),
	MANUFACTURER( RTH, "RTH", "PARTHUS"),
	MANUFACTURER( RTN, "RTN", "ROBERTSON TRITECH NYASKAIEN"),
	MANUFACTURER( RWC, "RWC", "ROCKWELL COLLINS"),
	MANUFACTURER( RWI, "RWI", "ROCKWELL INTERNATIONAL"),
	MANUFACTURER( SAA, "SAA", "SATRONIKA SL"),
	MANUFACTURER( SAE, "SAE", "STN ATLAS ELEKTRONIC GmbH"),
	MANUFACTURER( SAF, "SAF", "SAFEMINE"),
	MANUFACTURER( SAI, "SAI", "SAIT, INC."),
	MANUFACTURER( SAJ, "SAJ", "SAJ INSTRUMENT AB"),
	MANUFACTURER( SAM, "SAM", "SAM ELECTRONICS GmbH"),
	MANUFACTURER( SAL, "SAL", "CONSILIUM MARINE AB"),
	MANUFACTURER( SAP, "SAP", "SYSTEMS ENGINEERING & ASSESSMENT, LTD"),
	MANUFACTURER( SAT, "SAT", "SATLOC"),
	MANUFACTURER( SBG, "SBG", "SBG SYSTEMS"),
	MANUFACTURER( SBR, "SBR", "SEA-BIRD ELECTRONICS, INC."),
	MANUFACTURER( SCL, "SCL", "SOKKIA COMPANY, LTD"),
	MANUFACTURER( SCM, "SCM", "SCANDINAVIAN MICROSYSTEMS AS"),
	MANUFACTURER( SCO, "SCO", "SIMOCO TELECOMMUNICATIONS LTD"),
	MANUFACTURER( SCR, "SCR", "SIGNALCRAFTERS, INC."),
	MANUFACTURER( SDN, "SDN", "SAPIEN DESIGN"),
	MANUFACTURER( SEA, "SEA", "SEA, INC."),
	MANUFACTURER( SEC, "SEC", "SERCEL ELECTRONICS OF CANADA"),
	MANUFACTURER( SEE, "SEE", "SEETRAC AKA GLOBAL MARINE TRACKING"),
	MANUFACTURER( SEM, "SEM", "SEMTECH LTD"),
	MANUFACTURER( SEP, "SEP", "STEEL AND ENGINE PRODUCTS"),
	MANUFACTURER( SER, "SER", "SERCEL FRANCE"),
	MANUFACTURER( SFN, "SFN", "SEAFARER NAVIGATION INT'L,"),
	MANUFACTURER( SGC, "SGC", "SGC, INC."),
	MANUFACTURER( SGN, "SGN", "SIGNAV"),
	MANUFACTURER( SHI, "SHI", "SHINE MICRO"),
	MANUFACTURER( SIG, "SIG", "SIGNET, INC."),
	MANUFACTURER( SIM, "SIM", "SIMRAD, INC"),
	MANUFACTURER( SKA, "SKA", "SKANTEK CORPORATION"),
	MANUFACTURER( SKP, "SKP", "SKIPPER ELECTRONICS A/S"),
	MANUFACTURER( SLI, "SLI", "STARLINK INCORPORATED"),
	MANUFACTURER( SMD, "SMD", "SHIPMODUL CUSTOMWARE"),
	MANUFACTURER( SME, "SME", "SHAKESPEARE MARINE ELECTRONICS"),
	MANUFACTURER( SMF, "SMF", "SEATTLE MARINE AND FISHING SUPPLY CO."),
	MANUFACTURER( SMI, "SMI", "SPERRY MARINE, INC."),
	MANUFACTURER( SML, "SML", "SIMERL INSTRUMENTS"),
	MANUFACTURER( SMT, "SMT", "SRT-MARINE"),
	MANUFACTURER( SNP, "SNP", "SCIENCE APPLICATIONS INTERNATIONAL CORP"),
	MANUFACTURER( SNV, "SNV", "STARNAV CORPORATION"),
	MANUFACTURER( SNY, "SNY", "SONY CORPORATION – MOBILE ELECTRONICS"),
	MANUFACTURER( SOM, "SOM", "SOUND MARINE ELECTRONICS"),
	MANUFACTURER( SON, "SON", "SONARDYNE INTERNATIONAL LTD"),
	MANUFACTURER( SOV, "SOV", "SELL OVERSEAS AMERICA"),
	MANUFACTURER( SPL, "SPL", "SPELMAR"),
	MANUFACTURER( SPT, "SPT", "SOUND POWERED TELEPHONE"),
	MANUFACTURER( SRC, "SRC", "STELLAR RESEARCH GROUP"),
	MANUFACTURER( SRD, "SRD", "SRD LABS"),
	MANUFACTURER( SRF, "SRF", "SIRF TECHNOLOGY, INC."),
	MANUFACTURER( SRS, "SRS", "SCIENTIFIC RADIO SYSTEMS, INC."),
	MANUFACTURER( SRT, "SRT", "STANDARD RADIO AND TELEFON"),
	MANUFACTURER( SSC, "SSC", "SWEDISH SPACE CORPORATION"),
	MANUFACTURER( SSD, "SSD", "SAAB AB, SECURITY & DEFENSE SOLUTIONS, COMMAND AND CONTROL SYSTEMS DIVISION"),
	MANUFACTURER( SSE, "SSE", "SEVEN STAR ELECTRONICS"),
	MANUFACTURER( SSI, "SSI", "SEA SCOUT INDUSTRIES"),
	MANUFACTURER( SSN, "SSN", "SEPTENTRIO"),
	MANUFACTURER( STC, "STC", "STANDARD COMMUNICATIONS"),
	MANUFACTURER( STI, "STI", "SEA-TEMP INSTRUMENT CORP."),
	MANUFACTURER( STK, "STK", "SEATECHNIK"),
	MANUFACTURER( STL, "STL", "STREAMLINE TECHNOLOGY, LTD"),
	MANUFACTURER( STM, "STM", "SI-TEX MARINE ELECTRONICS"),
	MANUFACTURER( STO, "STO", "STOWE MARINE ELECTRONICS"),
	MANUFACTURER( STT, "STT", "SAAB TRANSPONDERTECH AB"),
	MANUFACTURER( SVY, "SVY", "SAVOY ELECTRONICS"),
	MANUFACTURER( SWI, "SWI", "SWOFFER MARINE INSTRUMENTS"),
	MANUFACTURER( SYN, "SYN", "SYNERGY SYSTEMS, LLC"),
	MANUFACTURER( TBB, "TBB", "THOMPSON BROTHERS BOAT MFG."),
	MANUFACTURER( TCN, "TCN", "TRADE COMMISSION OF NORWAY"),
	MANUFACTURER( TDI, "TDI", "TELEDYNE RD INSTRUMENTS"),
	MANUFACTURER( TDL, "TDL", "TIDELAND SIGNAL"),
	MANUFACTURER( TEL, "TEL", "PLESSEY TELLUMAT"),
	MANUFACTURER( TES, "TES", "THALES ELECTRONIC SYSTEMS, GmbH"),
	MANUFACTURER( THR, "THR", "THRANE AND THRANE A/A"),
	MANUFACTURER( TKI, "TKI", "TOKYO KEIKI INC"),
	MANUFACTURER( TLS, "TLS", "TELESYSTEMS"),
	MANUFACTURER( TMS, "TMS", "TRELLEBORG MARINE SYSTEMS"),
	MANUFACTURER( TMT, "TMT", "TAMTECH, LTD"),
	MANUFACTURER( TNL, "TNL", "TRIMBLE NAVIGATION"),
	MANUFACTURER( TOP, "TOP", "TOPCON POSITIONING SYSTEMS, INC."),
	MANUFACTURER( TRC, "TRC", "TRACOR, INC."),
	MANUFACTURER( TRS, "TRS", "TRAVROUTE SOFTWARE"),
	MANUFACTURER( TSI, "TSI", "TECHSONIC INDUSTRIES, INC."),
	MANUFACTURER( TTK, "TTK", "TALON TECHNOLOGY CORP."),
	MANUFACTURER( TTS, "TTS", "TRANSTECTOR SYSTEMS"),
	MANUFACTURER( TYC, "TYC", "VINCOTECH (FORMERLY TYCO ELECTRONICS)"),
	MANUFACTURER( TWC, "TWC", "TRANSWORLD COMMUNICATIONS"),
	MANUFACTURER( TWS, "TWS", "TELIT LOCATION SOLUTIONS a division of  TELIT WIRELESS SOLUTIONS"),
	MANUFACTURER( TXI, "TXI", "TEXAS INSTRUMENTS, INC."),
	MANUFACTURER( UBX, "UBX", "U-BLOX AG"),
	MANUFACTURER( UCG, "UCG", "UNITED STATES COAST GUARD"),
	MANUFACTURER( UEL, "UEL", "ULTRA ELECTRONICS LTD"),
	MANUFACTURER( UME, "UME", "UMEC"),
	MANUFACTURER( UNF, "UNF", "UNIFORCE ELECTRONICS CO."),
	MANUFACTURER( UNI, "UNI", "UNIDEN CORP. OF AMERICA"),
	MANUFACTURER( UNP, "UNP", "UNIPAS, INC."),
	MANUFACTURER( URS, "URS", "URSANAV, INC"),
	MANUFACTURER( VAN, "VAN", "VANNER, INC."),
	MANUFACTURER( VAR, "VAR", "VARIAN EIMAC ASSOCIATES"),
	MANUFACTURER( VCM, "VCM", "VIDEOCOM"),
	MANUFACTURER( VEC, "VEC", "VECTRON INTERNATIONAL"),
	MANUFACTURER( VEX, "VEX", "VEXILAR"),
	MANUFACTURER( VIS, "VIS", "VESSEL INFORMATION SYSTEMS"),
	MANUFACTURER( VMR, "VMR", "VAST MARKETING CORP"),
	MANUFACTURER( VSP, "VSP", "VESPER MARINE"),
	MANUFACTURER( VXS, "VXS", "VERTEX STANDARD"),
	MANUFACTURER( WAL, "WAL", "WALPORT U.S.A."),
	MANUFACTURER( WBE, "WBE", "WAMBLEE S.R.L."),
	MANUFACTURER( WBG, "WBG", "WESTBERG MANUFACTURING,"),
	MANUFACTURER( WBR, "WBR", "WESBAR CORPORATION"),
	MANUFACTURER( WEC, "WEC", "WESTINGHOUSE ELECTRIC CORP."),
	MANUFACTURER( WCI, "WCI", "WI-SYS COMMUNICATIONS"),
	MANUFACTURER( WDC, "WDC", "WEATHERDOCK CORP"),
	MANUFACTURER( WHA, "WHA", "W-H AUTOPILOTS"),
	MANUFACTURER( WMM, "WMM", "WAIT MANUFACTURING AND MARINE SALES CO."),
	MANUFACTURER( WMR, "WMR", "WESMAR ELECTRONICS"),
	MANUFACTURER( WNG, "WNG", "WINEGARD COMPANY"),
	MANUFACTURER( WSE, "WSE", "WILSON ELECTRONICS CORP."),
	MANUFACTURER( WST, "WST", "WEST ELECTRONICS LIMITED"),
	MANUFACTURER( WTC, "WTC", "WATERCOM"),
	MANUFACTURER( XEL, "XEL", "3XEL SRL"),
	MANUFACTURER( YAS, "YAS", "YAESU ELECTRONICS"),
	MANUFACTURER( YDK, "YDK", "YOKOGAWA DENSHIKIKI CO. LTD"),
	MANUFACTURER( YSH, "YSH", "STANDARD HORIZON YAESU"),
	MANUFACTURER( ZNS, "ZNS", "ZINNOS"),
};
// clang-format on

#undef MANUFACTURER

static manufacturer_map::const_iterator find_manufacturer(const std::string & tag)
{
	return std::find_if(begin(manufacturers), end(manufacturers),
		[tag](const manufacturer_map::value_type & m) { return m.tag == tag; });
}

static manufacturer_map::const_iterator find_manufacturer(manufacturer_id id)
{
	return std::find_if(begin(manufacturers), end(manufacturers),
		[id](const manufacturer_map::value_type & m) { return m.id == id; });
}

static bool is_nmea(const std::string & tag)
{
	return (tag.size() == 3) || ((tag.size() == 5) && (tag[0] != 'P'));
}

static bool is_unkown(const std::string & tag)
{
	return (tag.size() < 4) || (tag[0] != 'P');
}
}
/// @endcond

/// Returns the name of the manufacturer specified by the tag.
///
/// @param[in] tag The tag, which is provided by the NMEA sentences.
///   This includes the prefix 'P' and the manufacturer specific sentence
///   identification after the manufacturer identification.
/// @return The manufacturers ID.
manufacturer_id get_manufacturer_id(const std::string & tag)
{
	if (is_nmea(tag))
		return manufacturer_id::NMEA;

	if (is_unkown(tag))
		return manufacturer_id::UNKNOWN;

	const auto it = find_manufacturer(tag.substr(1, 3));
	return (it == manufacturers.cend()) ? manufacturer_id::UNKNOWN : it->id;
}

/// Returns the ID of the manufacturer of the specified sentence.
///
/// @param[in] s Sentence to get the manufacturer ID from.
/// @return The manufacturers ID.
manufacturer_id get_manufacturer_id(const sentence & s)
{
	return get_manufacturer_id(s.tag());
}

/// Returns the tag of the manufacturer specified by the ID.
std::string get_manufacturer_tag(manufacturer_id id)
{
	const auto it = find_manufacturer(id);
	return (it == manufacturers.cend()) ? std::string{} : it->tag;
}

/// Returns the name of the manufacturer specified by the ID.
std::string get_manufacturer_name(manufacturer_id id)
{
	if (id == manufacturer_id::NMEA)
		return "NMEA";
	if (id == manufacturer_id::UNKNOWN)
		return "UNKNOWN";

	const auto it = find_manufacturer(id);
	return (it == manufacturers.cend()) ? std::string{} : it->name;
}

/// Returns a container of all supported manufacturer IDs.
std::vector<manufacturer_id> get_supported_manufacturer_id()
{
	std::vector<manufacturer_id> v;
	v.reserve(manufacturers.size());

	for (const auto & m : manufacturers) {
		v.push_back(m.id);
	}

	return v;
}
}
}
